druxt-views 0.16.2 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,16 +7,40 @@ import { parse, stringify } from 'qs'
7
7
  import { mapActions } from 'vuex'
8
8
 
9
9
  /**
10
- * Renders a Drupal View using DruxtEntity components, using data provided by
11
- * the Drupal JSON:API Views module.
10
+ * The DruxtView component renders Drupal Views using configuration and
11
+ * results provided by the Drupal View and the JSON:API Views module.
12
12
  *
13
- * Supports filtering, pagination and sorting.
13
+ * The component renders slots for the View's headers, footers, entity results,
14
+ * exposed sorts and filters, and supports contextual filters.
14
15
  *
15
- * @example
16
+ * @example @lang vue
17
+ * <DruxtView display-id="block_1" view-id="promoted_items" />
18
+ *
19
+ * @example <caption>View with contextual filter</caption> @lang vue
16
20
  * <DruxtView
21
+ * :arguments="[entity.attributes.drupal_internal__nid]"
17
22
  * display-id="block_1"
18
- * view-id="promoted_items"
23
+ * view-id="articles_aside"
19
24
  * />
25
+ *
26
+ * @example <caption>DruxtView Wrapper component boilerplate</caption> @lang vue
27
+ * <template>
28
+ * <DruxtDebug :json="results" />
29
+ * </template>
30
+ *
31
+ * <script>
32
+ * import { DruxtViewsViewMixin } from 'druxt-views'
33
+ * export default {
34
+ * mixins: [DruxtViewsViewMixin]
35
+ * }
36
+ *
37
+ * @example <caption>DruxtView with template injection</caption> @lang vue
38
+ * <DruxtView>
39
+ * <template #default="{ results }">
40
+ * <!-- Do whatever you want here -->
41
+ * <DruxtDebug :json="results" />
42
+ * </template>
43
+ * </DruxtView>
20
44
  */
21
45
  export default {
22
46
  name: 'DruxtView',
@@ -475,6 +499,17 @@ export default {
475
499
  // Build scoped slots.
476
500
  const scopedSlots = {}
477
501
 
502
+ // Ensure an ID or UUID.
503
+ if (!this.viewId && !this.uuid) {
504
+ return {
505
+ default: () => h(
506
+ 'DruxtDebug',
507
+ { props: { summary: "Missing required 'uuid' or 'viewId' prop.", }},
508
+ [h('p', "The DruxtView component requires either the 'uuid' or 'viewId' prop to be set.")]
509
+ )
510
+ }
511
+ }
512
+
478
513
  // Headers.
479
514
  scopedSlots.header = () => Object.entries(this.headers).map(([key, header]) => h('span', {
480
515
  domProps: { innerHTML: (header.content || {}).value }, key
@@ -1,17 +1,3 @@
1
- <template>
2
- <component
3
- :is="(wrapper || {}).component || 'div'"
4
- v-if="!$fetchState.pending"
5
- v-bind="(wrapper || {}).propsData"
6
- >
7
- <component
8
- :is="component.is"
9
- v-model="model"
10
- v-bind="component.propsData"
11
- />
12
- </component>
13
- </template>
14
-
15
1
  <script>
16
2
 
17
3
  import DruxtModule from 'druxt/dist/components/DruxtModule.vue'
@@ -38,14 +24,6 @@ export default {
38
24
  },
39
25
  },
40
26
 
41
- watch: {
42
- model(to, from) {
43
- if (to !== from) {
44
- this.$emit('input', this.model)
45
- }
46
- }
47
- },
48
-
49
27
  /** DruxtModule settings */
50
28
  druxt: {
51
29
  /**
@@ -10,32 +10,40 @@ async function DruxtViewsStorybook({ stories }) {
10
10
  const druxt = new DruxtClient(options.druxt.baseUrl, { ...options.druxt, proxy: { api: false } });
11
11
  const resourceType = "view--view";
12
12
  const query = new DrupalJsonApiParams().addFilter("status", 1).addFields(resourceType, ["display", "description", "drupal_internal__id", "label"]);
13
- const collections = await druxt.getCollectionAll(resourceType, query);
13
+ const collections = (await druxt.getCollectionAll(resourceType, query)).map((collection) => collection.data).flat();
14
14
  const views = {};
15
- for (const collection of collections) {
16
- for (const view of collection.data) {
17
- const { description, display, drupal_internal__id, label } = view.attributes;
18
- const displays = Object.values(display).filter((item) => {
19
- const options2 = item.id === "default" ? item : merge(display.default, item);
20
- const extenders = options2.display_options.display_extenders;
21
- if (!Array.isArray(extenders) && !(extenders.jsonapi_views || {}).enabled) {
22
- return false;
23
- }
24
- return options2.display_options.row.type.startsWith("entity:");
25
- });
26
- if (displays.length) {
27
- views[drupal_internal__id] = { description, displays, uuid: view.id, label };
28
- }
15
+ for (const view of collections) {
16
+ const { description, display, drupal_internal__id, label } = view.attributes;
17
+ const displays = Object.values(display).filter((item) => {
18
+ const options2 = item.id === "default" ? item : merge(display.default, item);
19
+ const extenders = options2.display_options.display_extenders;
20
+ const enabled = !(!Array.isArray(extenders) && !(extenders.jsonapi_views || {}).enabled);
21
+ return enabled ? options2.display_options.row.type.startsWith("entity:") : false;
22
+ });
23
+ if (displays.length) {
24
+ views[drupal_internal__id] = {
25
+ description,
26
+ displays,
27
+ uuid: view.id,
28
+ viewId: drupal_internal__id,
29
+ label
30
+ };
29
31
  }
30
32
  }
33
+ addTemplate({
34
+ src: resolve(__dirname, `../templates/druxt-views.stories.js`),
35
+ fileName: `stories/druxt-views.stories.js`,
36
+ options: { views }
37
+ });
38
+ stories.push(resolve(options.buildDir, "./stories/druxt-views.stories.js"));
31
39
  for (const viewId of Object.keys(views)) {
32
40
  const { description, displays, label, uuid } = views[viewId];
33
41
  displays.sort((a) => a.id === "default" ? -1 : 0);
34
42
  const title = ["Druxt", "Views", label].join("/");
35
43
  addTemplate({
36
- src: resolve(__dirname, "../templates/druxt-views.stories.js"),
44
+ src: resolve(__dirname, "../templates/druxt-views.instance.stories.js"),
37
45
  fileName: `stories/druxt-views.${viewId}.stories.js`,
38
- options: { description, displays, title, uuid, viewId }
46
+ options: { description, displays, label, title, uuid, viewId }
39
47
  });
40
48
  }
41
49
  stories.push(resolve(options.buildDir, "./stories/druxt-views.*.stories.js"));
@@ -67,11 +75,9 @@ const DruxtViewsNuxtModule = function(moduleOptions = {}) {
67
75
  });
68
76
  options.store = true;
69
77
  this.nuxt.hook("storybook:config", async ({ stories }) => {
70
- stories.push("druxt-views/dist/components/*.stories.mjs");
71
78
  await DruxtViewsStorybook.call(this, { stories });
72
79
  });
73
80
  };
74
- DruxtViewsNuxtModule.meta = require("../package.json");
75
81
 
76
82
  const DruxtViewsStore = ({ store }) => {
77
83
  if (typeof store === "undefined") {
@@ -278,5 +284,7 @@ const DruxtViewsViewMixin = {
278
284
  }
279
285
  };
280
286
 
287
+ DruxtViewsNuxtModule.meta = require("../package.json");
288
+
281
289
  export default DruxtViewsNuxtModule;
282
290
  export { DruxtViewsFilterMixin, DruxtViewsFiltersMixin, DruxtViewsPagerMixin, DruxtViewsSortsMixin, DruxtViewsStore, DruxtViewsViewMixin };
@@ -19,32 +19,40 @@ async function DruxtViewsStorybook({ stories }) {
19
19
  const druxt$1 = new druxt.DruxtClient(options.druxt.baseUrl, { ...options.druxt, proxy: { api: false } });
20
20
  const resourceType = "view--view";
21
21
  const query = new drupalJsonapiParams.DrupalJsonApiParams().addFilter("status", 1).addFields(resourceType, ["display", "description", "drupal_internal__id", "label"]);
22
- const collections = await druxt$1.getCollectionAll(resourceType, query);
22
+ const collections = (await druxt$1.getCollectionAll(resourceType, query)).map((collection) => collection.data).flat();
23
23
  const views = {};
24
- for (const collection of collections) {
25
- for (const view of collection.data) {
26
- const { description, display, drupal_internal__id, label } = view.attributes;
27
- const displays = Object.values(display).filter((item) => {
28
- const options2 = item.id === "default" ? item : merge__default['default'](display.default, item);
29
- const extenders = options2.display_options.display_extenders;
30
- if (!Array.isArray(extenders) && !(extenders.jsonapi_views || {}).enabled) {
31
- return false;
32
- }
33
- return options2.display_options.row.type.startsWith("entity:");
34
- });
35
- if (displays.length) {
36
- views[drupal_internal__id] = { description, displays, uuid: view.id, label };
37
- }
24
+ for (const view of collections) {
25
+ const { description, display, drupal_internal__id, label } = view.attributes;
26
+ const displays = Object.values(display).filter((item) => {
27
+ const options2 = item.id === "default" ? item : merge__default['default'](display.default, item);
28
+ const extenders = options2.display_options.display_extenders;
29
+ const enabled = !(!Array.isArray(extenders) && !(extenders.jsonapi_views || {}).enabled);
30
+ return enabled ? options2.display_options.row.type.startsWith("entity:") : false;
31
+ });
32
+ if (displays.length) {
33
+ views[drupal_internal__id] = {
34
+ description,
35
+ displays,
36
+ uuid: view.id,
37
+ viewId: drupal_internal__id,
38
+ label
39
+ };
38
40
  }
39
41
  }
42
+ addTemplate({
43
+ src: path.resolve(__dirname, `../templates/druxt-views.stories.js`),
44
+ fileName: `stories/druxt-views.stories.js`,
45
+ options: { views }
46
+ });
47
+ stories.push(path.resolve(options.buildDir, "./stories/druxt-views.stories.js"));
40
48
  for (const viewId of Object.keys(views)) {
41
49
  const { description, displays, label, uuid } = views[viewId];
42
50
  displays.sort((a) => a.id === "default" ? -1 : 0);
43
51
  const title = ["Druxt", "Views", label].join("/");
44
52
  addTemplate({
45
- src: path.resolve(__dirname, "../templates/druxt-views.stories.js"),
53
+ src: path.resolve(__dirname, "../templates/druxt-views.instance.stories.js"),
46
54
  fileName: `stories/druxt-views.${viewId}.stories.js`,
47
- options: { description, displays, title, uuid, viewId }
55
+ options: { description, displays, label, title, uuid, viewId }
48
56
  });
49
57
  }
50
58
  stories.push(path.resolve(options.buildDir, "./stories/druxt-views.*.stories.js"));
@@ -76,11 +84,9 @@ const DruxtViewsNuxtModule = function(moduleOptions = {}) {
76
84
  });
77
85
  options.store = true;
78
86
  this.nuxt.hook("storybook:config", async ({ stories }) => {
79
- stories.push("druxt-views/dist/components/*.stories.mjs");
80
87
  await DruxtViewsStorybook.call(this, { stories });
81
88
  });
82
89
  };
83
- DruxtViewsNuxtModule.meta = require("../package.json");
84
90
 
85
91
  const DruxtViewsStore = ({ store }) => {
86
92
  if (typeof store === "undefined") {
@@ -287,6 +293,8 @@ const DruxtViewsViewMixin = {
287
293
  }
288
294
  };
289
295
 
296
+ DruxtViewsNuxtModule.meta = require("../package.json");
297
+
290
298
  exports.DruxtViewsFilterMixin = DruxtViewsFilterMixin;
291
299
  exports.DruxtViewsFiltersMixin = DruxtViewsFiltersMixin;
292
300
  exports.DruxtViewsPagerMixin = DruxtViewsPagerMixin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "druxt-views",
3
- "version": "0.16.2",
3
+ "version": "0.18.0",
4
4
  "description": "Drupal Views components for Druxt with support for filters, pagination and sorting.",
5
5
  "keywords": [
6
6
  "cms",
@@ -38,17 +38,16 @@
38
38
  "module": "dist/druxt-views.esm.js",
39
39
  "files": [
40
40
  "dist",
41
- "nuxt",
42
41
  "templates"
43
42
  ],
44
43
  "dependencies": {
45
44
  "axios": "^0.21.1",
46
45
  "deepmerge": "^4.2.2",
47
46
  "drupal-jsonapi-params": "^1.1.12",
48
- "druxt": "^0.14.0",
49
- "druxt-blocks": "^0.14.2",
50
- "druxt-entity": "^0.21.3",
51
- "druxt-router": "^0.24.1",
47
+ "druxt": "^0.17.0",
48
+ "druxt-blocks": "^0.15.0",
49
+ "druxt-entity": "^0.24.0",
50
+ "druxt-router": "^0.26.0",
52
51
  "md5": "^2.3.0"
53
52
  },
54
53
  "optionalDependencies": {
@@ -0,0 +1,45 @@
1
+ import DruxtView from 'druxt-views/dist/components/DruxtView.vue'
2
+
3
+ export default {
4
+ title: <%= devalue(options.title) %>,
5
+ component: DruxtView,
6
+ argTypes: {
7
+ displayId: {
8
+ options: [<%= options.displays.map(({ id }) => `'${id}'`).join(', ') %>],
9
+ control: {
10
+ type: 'select',
11
+ },
12
+ },
13
+ type: { table: { disable: true }},
14
+ viewId: { table: { disable: true }},
15
+ uuid: { table: { disable: true }},
16
+ },
17
+ parameters: {
18
+ docs: {
19
+ description: {
20
+ component: <%= options.description ? devalue(options.description) : `"Renders the **${options.label}** view."` %> + '\n\n```jsx\n\n<DruxtView view-id="<%= options.viewId %>" />\n```'
21
+ }
22
+ }
23
+ }
24
+ }
25
+
26
+ const Template = (args, { argTypes }) => ({
27
+ props: Object.keys(args),
28
+ template: '<DruxtView v-bind="$props" v-on="$props" />',
29
+ })
30
+
31
+ <% for (display of options.displays) { %>
32
+ export const <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %> = Template.bind({})
33
+ <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.args = {
34
+ displayId: '<%= display.id %>',
35
+ viewId: '<%= options.viewId %>',
36
+ }
37
+ <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.storyName = '<%= display.display_title %>'
38
+ <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.parameters = {
39
+ docs: {
40
+ source: {
41
+ code: '<DruxtView display-id="<%= display.id %>" view-id="<%= options.viewId %>" />'
42
+ }
43
+ }
44
+ }
45
+ <% } %>
@@ -1,42 +1,82 @@
1
1
  import DruxtView from 'druxt-views/dist/components/DruxtView.vue'
2
2
 
3
3
  export default {
4
- title: <%= devalue(options.title) %>,
4
+ title: 'Druxt/Views/DruxtView',
5
5
  component: DruxtView,
6
6
  argTypes: {
7
- displayId: {
7
+ uuid: {
8
+ options: [<%= (Object.values(options.views) || []).map((o) => `'${o.uuid}'`).join(', ') %>],
8
9
  control: {
9
10
  type: 'select',
10
- options: [<%= options.displays.map(({ id }) => `'${id}'`).join(', ') %>]
11
+ labels: Object.fromEntries([<%= (Object.values(options.views) || []).map((o) => `['${o.uuid}', "${o.label} (${o.uuid})"]`).join(', ') %>])
11
12
  },
12
13
  },
13
- },
14
- parameters: {
15
- docs: {
16
- description: {
17
- component: <%= options.description ? devalue(options.description) : '" "' %>
18
- }
14
+ viewId: {
15
+ options: [<%= (Object.keys(options.views) || []).map((s) => `'${s}'`).join(', ') %>],
16
+ control: {
17
+ type: 'select',
18
+ labels: Object.fromEntries([<%= (Object.values(options.views) || []).map((o) => `['${o.viewId}', "${o.label} (${o.viewId})"]`).join(', ') %>])
19
+ },
19
20
  }
20
21
  }
21
22
  }
22
23
 
23
24
  const Template = (args, { argTypes }) => ({
24
- props: Object.keys(args),
25
- template: '<DruxtView v-bind="$props" v-on="$props" />',
25
+ components: { DruxtView },
26
+ props: Object.keys(argTypes),
27
+ template: `<DruxtView v-bind="$props" />`
26
28
  })
27
29
 
28
- <% for (display of options.displays) { %>
29
- export const <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %> = Template.bind({})
30
- <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.args = {
31
- displayId: '<%= display.id %>',
32
- viewId: '<%= options.viewId %>',
30
+ export const Default = Template.bind({})
31
+ Default.storyName = 'DruxtView'
32
+
33
+ let code
34
+
35
+ // Wrapper story.
36
+ code = `<template>
37
+ <DruxtDebug :json="results" />
38
+ </template>
39
+
40
+ <script>
41
+ import { DruxtViewsViewMixin } from 'druxt-views'
42
+ export default {
43
+ mixins: [DruxtViewsViewMixin]
33
44
  }
34
- <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.storyName = '<%= display.display_title %>'
35
- <%= display.id.charAt(0).toUpperCase() + display.id.slice(1) %>.parameters = {
45
+ </script>`
46
+ export const Wrapper = (args, { argTypes }) => ({
47
+ components: { DruxtView },
48
+ props: Object.keys(argTypes),
49
+ template: `<DruxtView v-bind="$props" ref="module">
50
+ <template #default>
51
+ Component options:
52
+ <ul>
53
+ <li v-for="option of $refs.module.getModuleComponents()" :key="option.name">{{ option.name }}</li>
54
+ </ul>
55
+ </template>
56
+ </DruxtView>`
57
+ })
58
+ Wrapper.parameters = {
36
59
  docs: {
37
- source: {
38
- code: '<DruxtView display-id="<%= display.id %>" view-id="<%= options.viewId %>" />'
39
- }
60
+ storyDescription: 'The DruxtView component can be themed by using a Druxt Wrapper component.\n\nCreate an appropriately named component, using the relevant component option, with the following boilerplate:\n\n```jsx\n' + code + '\n```',
61
+ source: { code }
62
+ }
63
+ }
64
+
65
+ // Template injection story.
66
+ code = `<DruxtView viewId="">
67
+ <template #default="{ results }">
68
+ <!-- Do whatever you want here -->
69
+ <DruxtDebug :json="results" open />
70
+ </template>
71
+ </DruxtView>`
72
+ export const TemplateInjection = (args, { argTypes }) => ({
73
+ components: { DruxtView },
74
+ props: Object.keys(argTypes),
75
+ template: code.replace('viewId=""', 'v-bind="$props"')
76
+ })
77
+ TemplateInjection.parameters = {
78
+ docs: {
79
+ storyDescription: 'The DruxtView component can be themed by injecting the default template into the compomnent.\n\n```jsx\n' + code + '\n```',
80
+ source: { code }
40
81
  }
41
82
  }
42
- <% } %>
package/CHANGELOG.md DELETED
@@ -1,283 +0,0 @@
1
- # druxt-views
2
-
3
- ## 0.16.2
4
-
5
- ### Patch Changes
6
-
7
- - Updated dependencies [45bc0b9]
8
- - druxt@0.14.0
9
- - druxt-blocks@0.14.2
10
- - druxt-entity@0.21.3
11
- - druxt-router@0.24.1
12
-
13
- ## 0.16.1
14
-
15
- ### Patch Changes
16
-
17
- - Updated dependencies [9161b38]
18
- - druxt-router@0.24.0
19
- - druxt-blocks@0.14.1
20
- - druxt-entity@0.21.2
21
-
22
- ## 0.16.0
23
-
24
- ### Minor Changes
25
-
26
- - e7b1533: Refactored DruxtModule fetch hooks
27
-
28
- ### Patch Changes
29
-
30
- - d80f5d4: Fixed issue with undefined wrapper in DruxtViewsFilter
31
- - Updated dependencies [025315a]
32
- - druxt-entity@0.21.0
33
- - druxt-blocks@0.14.0
34
- - druxt@0.13.0
35
- - druxt-router@0.23.0
36
-
37
- ## 0.15.0
38
-
39
- ### Minor Changes
40
-
41
- - c769243: Added support for Contextual filters (arguments)
42
-
43
- ```vue
44
- <DruxtView
45
- :arguments="[1, 2, 3]"
46
- displayid="block_1"
47
- view-id="articles_aside"
48
- />
49
- ```
50
-
51
- ### Patch Changes
52
-
53
- - Updated dependencies [4504a2f]
54
- - druxt@0.12.0
55
- - druxt-router@0.22.0
56
- - druxt-entity@0.20.0
57
- - druxt-blocks@0.13.1
58
-
59
- ## 0.14.1
60
-
61
- ### Patch Changes
62
-
63
- - b9e5839: Fixed missing templates in package
64
-
65
- ## 0.14.0
66
-
67
- ### Minor Changes
68
-
69
- - dae345e: Moved `$druxtViews` plugin settings to `$druxt.settings.views`
70
- - dae345e: Added module level options
71
- - 8d28c18: Updated storybook integration
72
-
73
- ### Patch Changes
74
-
75
- - 4da7fd3: Fixed errors when no props provided to component
76
- - Updated dependencies [9d905e8]
77
- - druxt-router@0.21.0
78
- - druxt-blocks@0.13.0
79
- - druxt-entity@0.19.0
80
- - druxt@0.11.0
81
-
82
- ## 0.13.0
83
-
84
- ### Minor Changes
85
-
86
- - 715e5ef: Updated component registration method to use the Nuxt `components:dirs` hook
87
-
88
- ### Patch Changes
89
-
90
- - 49454cb: Fixed path to components in Storybook
91
- - Updated dependencies [1ab762c]
92
- - druxt-router@0.20.0
93
- - druxt-blocks@0.12.0
94
- - druxt@0.10.0
95
- - druxt-entity@0.18.0
96
-
97
- ## 0.12.1
98
-
99
- ### Patch Changes
100
-
101
- - c4616df: Fixed dependencies
102
- - Updated dependencies [c4616df]
103
- - druxt-blocks@0.11.1
104
- - druxt-entity@0.17.1
105
- - druxt-router@0.19.1
106
-
107
- ## 0.12.0
108
-
109
- ### Minor Changes
110
-
111
- - 21170fb: Moved Vue components out of bundle
112
-
113
- ⚠ Potential breaking change
114
-
115
- _**Note:** This only effects custom Druxt modules and implementations._
116
-
117
- ```diff
118
- -import { DruxtView } from 'druxt-views'
119
- +import DruxtView from 'druxt-views/dist/components/DruxtView.vue'
120
- ```
121
-
122
- ### Patch Changes
123
-
124
- - Updated dependencies [21170fb]
125
- - druxt-blocks@0.11.0
126
- - druxt@0.9.0
127
- - druxt-entity@0.17.0
128
- - druxt-router@0.19.0
129
-
130
- ## 0.11.0
131
-
132
- ### Minor Changes
133
-
134
- - Added support for default template injection
135
-
136
- - For details, see the [Druxt 0.8.0 release notes](/api/packages/druxt/CHANGELOG#080)
137
-
138
- - Added ability to load by UUID or View ID
139
-
140
- ## 0.10.0
141
-
142
- ### Minor Changes
143
-
144
- - Added empty content to results slot if no results
145
-
146
- ## 0.9.3
147
-
148
- ### Patch Changes
149
-
150
- - Fixed issue with model filter forcing a refresh
151
-
152
- ## 0.9.2
153
-
154
- ### Patch Changes
155
-
156
- - Added fetchKey to fix hydration issues
157
-
158
- ## 0.9.1
159
-
160
- ### Patch Changes
161
-
162
- - Fixed issue with default view mode value
163
-
164
- ## 0.9.0
165
-
166
- ### Minor Changes
167
-
168
- - Added ability to filter JSON:API fields
169
- - Refactored components to use DruxtModule
170
- - Fixed issues with Storybook integration
171
-
172
- ## 0.8.3
173
-
174
- ### Patch Changes
175
-
176
- - Fixed missing attachement Views
177
-
178
- ## 0.8.2
179
-
180
- ### Patch Changes
181
-
182
- - Fixed issues with Storybook integration
183
-
184
- ## 0.8.1
185
-
186
- ### Patch Changes
187
-
188
- - Fixed issues with Storybook integration
189
- - Fixed missing attachements Views
190
-
191
- ## 0.8.0
192
-
193
- ### Minor Changes
194
-
195
- - Added Storybook intergration
196
- - Fixed broken View results
197
-
198
- ## 0.7.2
199
-
200
- ### Patch Changes
201
-
202
- - Fixed broken View results
203
-
204
- ## 0.7.1
205
-
206
- ### Patch Changes
207
-
208
- - Fixed deprecation notice
209
-
210
- ## 0.7.0
211
-
212
- ### Minor Changes
213
-
214
- - Refactored module to use DruxtClient/DruxtStore
215
- - Added pagination
216
- - Added exposed sorts
217
- - Added exposed filters
218
- - Added Views Vuex store
219
-
220
- ## 0.6.2
221
-
222
- ### Patch Changes
223
-
224
- - Fixed issue with View display data
225
-
226
- ## 0.6.1
227
-
228
- ### Patch Changes
229
-
230
- - Updated dependencies
231
-
232
- ## 0.6.0
233
-
234
- ### Minor Changes
235
-
236
- - Added DruxtRouter View component
237
- - Updated dependencies
238
-
239
- ## 0.5.1
240
-
241
- ### Patch Changes
242
-
243
- - Updated dependencies
244
-
245
- ## 0.5.0
246
-
247
- ### Minor Changes
248
-
249
- - Added support for DruxtComponentMixin
250
- - Updated dependencies
251
-
252
- ## 0.4.2
253
-
254
- ### Patch Changes
255
-
256
- - Updated attachment_before/after slots
257
- - Updated dependencies
258
-
259
- ## 0.4.1
260
-
261
- ### Patch Changes
262
-
263
- - Added attachment_before/after slots
264
-
265
- ## 0.4.0
266
-
267
- ### Minor Changes
268
-
269
- ## 0.3.0
270
-
271
- ### Minor Changes
272
-
273
- ## 0.2.1
274
-
275
- ### Patch Changes
276
-
277
- ## 0.2.0
278
-
279
- ### Minor Changes
280
-
281
- ## 0.1.0
282
-
283
- ### Initial release
@@ -1,15 +0,0 @@
1
- import DruxtView from './DruxtView.vue'
2
-
3
- export default {
4
- title: 'Druxt/Views/DruxtView',
5
- component: DruxtView
6
- }
7
-
8
- const Template = (args, { argTypes }) => ({
9
- components: { DruxtView },
10
- props: Object.keys(argTypes),
11
- template: `<DruxtView v-bind="$props" />`
12
- })
13
-
14
- export const Default = Template.bind({})
15
- Default.storyName = 'DruxtView'