-
+
-
+
@@ -54,19 +54,19 @@
type: Boolean,
default: false,
},
- max: {
+ maxDate: {
type: [String, Date],
default: null
},
- min: {
+ minDate: {
type: [String, Date],
default: null
},
- fromText: {
+ fromLabel: {
type: String,
default: '@page.schedule.publish'
},
- toText: {
+ toLabel: {
type: String,
default: '@page.schedule.unpublish'
},
@@ -123,10 +123,10 @@
options: {
format: this.format,
time: this.time,
- max: this.max,
- min: this.min,
- fromText: this.fromText,
- toText: this.toText,
+ max: this.maxDate,
+ min: this.minDate,
+ fromText: this.fromLabel,
+ toText: this.toLabel,
amPm: this.amPm
},
model: {
diff --git a/zero.Web.UI/App/core/editor-field.js b/zero.Web.UI/App/core/editor-field.js
index dcaa06e1..1b9d7087 100644
--- a/zero.Web.UI/App/core/editor-field.js
+++ b/zero.Web.UI/App/core/editor-field.js
@@ -12,6 +12,7 @@ import Checklist from '../editor/fields/checklist.vue';
import ColorPicker from '../editor/fields/colorpicker.vue';
import CountryPicker from '../editor/fields/countrypicker.vue';
import CulturePicker from '../editor/fields/culturepicker.vue';
+import DatePicker from '../editor/fields/datepicker.vue';
import DateRangePicker from '../editor/fields/daterangepicker.vue';
import IconPicker from '../editor/fields/iconPicker.vue';
import LanguagePicker from '../editor/fields/language.vue';
@@ -275,6 +276,22 @@ class EditorField
}
+ /**
+ * Renders a date picker
+ * @param {object} [options] - Custom options
+ * @param {string} [options.format] - Format the date output
+ * @param {boolean} [options.time=false] - Allow time input
+ * @param {string|Date} [options.maxDate] - Maximum selectable date
+ * @param {string|Date} [options.minDate] - Minimum selectable date
+ * @param {string} [options.amPm] - Render time as AM/PM
+ * @returns {EditorField}
+ */
+ datePicker(options)
+ {
+ return this._setComponent(DatePicker, { ...options });
+ }
+
+
/**
* Renders a date range picker
* @param {object} [options] - Custom options
@@ -342,11 +359,12 @@ class EditorField
/**
* Display a module renderer which allows you to select from defined modules
+ * @param {string[]} [tags] - Only allow selection of modules which match defined tags
* @returns {EditorField}
*/
- modules()
+ modules(tags)
{
- return this._setComponent(Modules);
+ return this._setComponent(Modules, { tags });
}
diff --git a/zero.Web.UI/App/editor/fields/datepicker.vue b/zero.Web.UI/App/editor/fields/datepicker.vue
new file mode 100644
index 00000000..10c28479
--- /dev/null
+++ b/zero.Web.UI/App/editor/fields/datepicker.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zero.Web.UI/App/editor/fields/daterangepicker.vue b/zero.Web.UI/App/editor/fields/daterangepicker.vue
index 45e96ebe..2b842073 100644
--- a/zero.Web.UI/App/editor/fields/daterangepicker.vue
+++ b/zero.Web.UI/App/editor/fields/daterangepicker.vue
@@ -1,13 +1,7 @@
+ v-bind="{ format, time, maxDate, minDate, fromLabel, toLabel, amPm, inline }" />
@@ -22,7 +16,38 @@
to: null
}
},
- config: Object,
+ format: {
+ type: String,
+ default: null
+ },
+ time: {
+ type: Boolean,
+ default: false,
+ },
+ maxDate: {
+ type: [String, Date],
+ default: null
+ },
+ minDate: {
+ type: [String, Date],
+ default: null
+ },
+ fromLabel: {
+ type: String,
+ default: null
+ },
+ toLabel: {
+ type: String,
+ default: null
+ },
+ amPm: {
+ type: Boolean,
+ default: false
+ },
+ inline: {
+ type: Boolean,
+ default: false
+ },
disabled: {
type: Boolean,
default: false
diff --git a/zero.Web.UI/App/editor/fields/modules.vue b/zero.Web.UI/App/editor/fields/modules.vue
index cd963131..e4db9789 100644
--- a/zero.Web.UI/App/editor/fields/modules.vue
+++ b/zero.Web.UI/App/editor/fields/modules.vue
@@ -1,5 +1,5 @@
-
+
@@ -13,6 +13,10 @@
type: Boolean,
default: false
},
+ tags: {
+ type: Array,
+ default: () => []
+ },
config: Object
}
}
diff --git a/zero.Web.UI/App/resources/modules.js b/zero.Web.UI/App/resources/modules.js
index b324772e..8d7652dd 100644
--- a/zero.Web.UI/App/resources/modules.js
+++ b/zero.Web.UI/App/resources/modules.js
@@ -4,9 +4,9 @@ const base = 'modules/';
export default {
- getModuleTypes()
+ getModuleTypes(tags)
{
- return Axios.get(base + 'getModuleTypes').then(res => Promise.resolve(res.data));
+ return Axios.get(base + 'getModuleTypes', { params: { tags } }).then(res => Promise.resolve(res.data));
},
getModuleType(alias)
diff --git a/zero.Web/Controllers/ModulesController.cs b/zero.Web/Controllers/ModulesController.cs
index 9ee587d9..f3ee8fe7 100644
--- a/zero.Web/Controllers/ModulesController.cs
+++ b/zero.Web/Controllers/ModulesController.cs
@@ -17,7 +17,7 @@ namespace zero.Web.Controllers
}
- public IActionResult GetModuleTypes() => Json(Api.GetModuleTypes());
+ public IActionResult GetModuleTypes([FromQuery] string[] tags = default) => Json(Api.GetModuleTypes(tags));
public IActionResult GetModuleType([FromQuery] string alias) => Json(Api.GetModuleType(alias));