From 1f7f17ee3006ae4856271a72ac64dfef908c0f32 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Thu, 2 Jul 2020 15:25:17 +1000 Subject: [PATCH] Add date field --- assets/javascripts/wizard-custom.js | 1 + .../templates/components/wizard-field-date.hbs | 4 ++++ config/locales/client.en.yml | 1 + lib/custom_wizard/builder.rb | 13 +++++++++++++ lib/custom_wizard/field.rb | 1 + 5 files changed, 20 insertions(+) create mode 100644 assets/javascripts/wizard/templates/components/wizard-field-date.hbs diff --git a/assets/javascripts/wizard-custom.js b/assets/javascripts/wizard-custom.js index 895a66a9..cef27152 100644 --- a/assets/javascripts/wizard-custom.js +++ b/assets/javascripts/wizard-custom.js @@ -96,6 +96,7 @@ //= require discourse/app/templates/components/conditional-loading-spinner //= require discourse/app/templates/components/d-button //= require discourse/app/templates/components/d-editor +//= require discourse/app/templates/components/date-picker //= require discourse/app/templates/components/emoji-picker //= require discourse/app/templates/components/popup-input-tip //= require discourse/app/templates/category-tag-autocomplete diff --git a/assets/javascripts/wizard/templates/components/wizard-field-date.hbs b/assets/javascripts/wizard/templates/components/wizard-field-date.hbs new file mode 100644 index 00000000..b2ac15d8 --- /dev/null +++ b/assets/javascripts/wizard/templates/components/wizard-field-date.hbs @@ -0,0 +1,4 @@ +{{date-picker + value=field.value + id=field.id +}} \ No newline at end of file diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index b7c3d73f..5d58200f 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -163,6 +163,7 @@ en: category: Category group: Group user_selector: User Selector + date: Date connector: and: "and" diff --git a/lib/custom_wizard/builder.rb b/lib/custom_wizard/builder.rb index 611ed446..ebe24a4a 100644 --- a/lib/custom_wizard/builder.rb +++ b/lib/custom_wizard/builder.rb @@ -326,6 +326,10 @@ class CustomWizard::Builder if type === 'upload' && value.present? && !validate_file_type(value, file_types) updater.errors.add(id, I18n.t('wizard.field.invalid_file', label: label, types: file_types)) end + + if type === 'date' && value.present? && !validate_date(value) + updater.errors.add(id, I18n.t('wizard.field.invalid_date')) + end CustomWizard::Builder.field_validators.each do |validator| if type === validator[:type] @@ -339,6 +343,15 @@ class CustomWizard::Builder .map { |t| t.gsub('.', '') } .include?(File.extname(value['original_filename'])[1..-1]) end + + def validate_date(value) + begin + Date.parse(value) + true + rescue ArgumentError + false + end + end def is_text_type(field) ['text', 'textarea'].include? field['type'] diff --git a/lib/custom_wizard/field.rb b/lib/custom_wizard/field.rb index 77838cd0..dff610ce 100644 --- a/lib/custom_wizard/field.rb +++ b/lib/custom_wizard/field.rb @@ -11,6 +11,7 @@ class CustomWizard::Field min_length: nil }, text_only: {}, + date: {}, number: {}, checkbox: {}, url: {