bullet_train-fields 1.6.30 → 1.6.31
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dce4e35906108db130d2c67047de53ad1c3b522226573c1b0b5a58794173d755
|
4
|
+
data.tar.gz: 5f1fd1ed5cac7fe9d1c9fb6eb73cd076f3e2c0fca2a4cb38c564f81a82232787
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16348cfa7e0354237f70ea88f29d66b051acdda4837fc9be0ff7aed0f77e80f2cee328f0a510554737a1b4dcb92526de91aecd2208cfefe5f7ec2f8613f949db
|
7
|
+
data.tar.gz: 0fb73b4b94abf6642ce5e598a97819d5b7c236b804e898dfab6a460bb90fb467a626b6633aa2d7388f3433b9db25aa440dd727f536642a067a1b49a11d309f89
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Account::DatesHelper
|
2
|
+
def display_date(timestamp, custom_date_format = nil, format: :default, date_format: nil)
|
3
|
+
return nil unless timestamp
|
4
|
+
format = date_format if date_format
|
5
|
+
|
6
|
+
if format && format == :default
|
7
|
+
# e.g. October 11, 2018
|
8
|
+
if custom_date_format
|
9
|
+
local_time(timestamp).strftime(custom_date_format)
|
10
|
+
elsif local_time(timestamp).year == local_time(Time.now).year
|
11
|
+
local_time(timestamp).strftime("%B %-d")
|
12
|
+
else
|
13
|
+
local_time(timestamp).strftime("%B %-d, %Y")
|
14
|
+
end
|
15
|
+
else
|
16
|
+
localize(local_time(timestamp).to_date, format: format)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def display_time(timestamp, custom_time_format = nil, format: :default, time_format: nil)
|
21
|
+
return nil unless timestamp
|
22
|
+
format = time_format if time_format
|
23
|
+
|
24
|
+
if format && format == :default
|
25
|
+
# e.g. 4:22 PM
|
26
|
+
local_time(timestamp).strftime(custom_time_format || "%l:%M %p")
|
27
|
+
else
|
28
|
+
localize(local_time(timestamp).to_time, format: format)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def display_date_and_time(timestamp, custom_date_format = nil, custom_time_format = nil, format: :default, date_format: nil, time_format: nil)
|
33
|
+
return nil unless timestamp
|
34
|
+
format = "#{date_format} #{time_format}" if date_format && time_format
|
35
|
+
|
36
|
+
if format && format == :default
|
37
|
+
# e.g. Today at 4:22 PM
|
38
|
+
# e.g. Yesterday at 2:12 PM
|
39
|
+
# e.g. April 24 at 7:39 AM
|
40
|
+
# today?
|
41
|
+
if local_time(timestamp).to_date == local_time(Time.now).to_date
|
42
|
+
"Today at #{display_time(timestamp, custom_time_format)}"
|
43
|
+
# yesterday?
|
44
|
+
elsif (local_time(timestamp).to_date) == (local_time(Time.now).to_date - 1.day)
|
45
|
+
"Yesterday at #{display_time(timestamp, custom_time_format)}"
|
46
|
+
else
|
47
|
+
"#{display_date(timestamp, custom_date_format)} at #{display_time(timestamp, custom_time_format)}"
|
48
|
+
end
|
49
|
+
else
|
50
|
+
localize(local_time(timestamp).to_datetime, format: format)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def local_time(timestamp)
|
55
|
+
timestamp&.in_time_zone(current_user.time_zone)
|
56
|
+
end
|
57
|
+
|
58
|
+
def am_pm?
|
59
|
+
!"#{I18n.t("time.am", fallback: false, default: "")}#{I18n.t("time.pm", fallback: false, default: "")}".empty?
|
60
|
+
end
|
61
|
+
|
62
|
+
def time_zone_name_to_id
|
63
|
+
ActiveSupport::TimeZone.all.map { |tz| {tz.name.to_s => tz.tzinfo.name} }.reduce({}, :merge)
|
64
|
+
end
|
65
|
+
|
66
|
+
def current_time_zone
|
67
|
+
current_time_zone_name = current_user&.time_zone || current_user&.current_team&.time_zone || "UTC"
|
68
|
+
ActiveSupport::TimeZone.find_tzinfo(current_time_zone_name).name
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Account::FormsHelper
|
2
|
+
PRESENCE_VALIDATORS = [ActiveRecord::Validations::PresenceValidator, ActiveModel::Validations::PresenceValidator]
|
3
|
+
|
4
|
+
def presence_validated?(object, attribute)
|
5
|
+
validators = object.class.validators
|
6
|
+
validators.select! do |validator|
|
7
|
+
PRESENCE_VALIDATORS.include?(validator.class) && validator.attributes.include?(attribute)
|
8
|
+
end
|
9
|
+
validators.any?
|
10
|
+
end
|
11
|
+
|
12
|
+
def flush_content_for(name)
|
13
|
+
content_for name, flush: true do
|
14
|
+
""
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def options_with_labels(options, namespace)
|
19
|
+
hash = {}
|
20
|
+
options.each do |option|
|
21
|
+
hash[option] = t([namespace, option].join("."))
|
22
|
+
end
|
23
|
+
hash
|
24
|
+
end
|
25
|
+
|
26
|
+
def if_present(string)
|
27
|
+
string.present? ? string : nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def model_key(form)
|
31
|
+
form.object.class.name.pluralize.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def labels_for(form, method)
|
35
|
+
keys = [:placeholder, :label, :help, :options_help]
|
36
|
+
path = [model_key(form), (current_fields_namespace || :fields), method].compact
|
37
|
+
Struct.new(*keys).new(*keys.map { |key| t((path + [key]).join("."), default: "").presence })
|
38
|
+
end
|
39
|
+
|
40
|
+
def options_for(form, method)
|
41
|
+
# e.g. "scaffolding/completely_concrete/tangible_things.fields.text_area_value.options"
|
42
|
+
path = [model_key(form), (current_fields_namespace || :fields), method, :options]
|
43
|
+
options = t(path.compact.join("."))
|
44
|
+
return options unless options.is_a?(Hash)
|
45
|
+
options.stringify_keys
|
46
|
+
end
|
47
|
+
|
48
|
+
def legacy_label_for(form, method)
|
49
|
+
# e.g. 'scaffolding/things.labels.name'
|
50
|
+
key = "#{model_key(form)}.labels.#{method}"
|
51
|
+
# e.g. 'scaffolding/things.labels.name' or 'scaffolding.things.labels.name' or nil
|
52
|
+
t(key, default: "").presence || t(key.tr("/", "."), default: "").presence
|
53
|
+
end
|
54
|
+
|
55
|
+
def within_fields_namespace(namespace)
|
56
|
+
@fields_namespaces ||= []
|
57
|
+
@fields_namespaces << namespace
|
58
|
+
yield
|
59
|
+
@fields_namespaces.pop
|
60
|
+
end
|
61
|
+
|
62
|
+
def current_fields_namespace
|
63
|
+
@fields_namespaces&.last
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module AttributesHelper
|
2
|
+
def current_attributes_object
|
3
|
+
@_current_attribute_settings&.dig(:object)
|
4
|
+
end
|
5
|
+
|
6
|
+
def current_attributes_strategy
|
7
|
+
@_current_attribute_settings&.dig(:strategy)
|
8
|
+
end
|
9
|
+
|
10
|
+
def with_attribute_settings(object: current_attributes_object, strategy: current_attributes_strategy)
|
11
|
+
old_attribute_settings = @_current_attribute_settings
|
12
|
+
@_current_attribute_settings = {object: object, strategy: strategy}
|
13
|
+
yield
|
14
|
+
ensure
|
15
|
+
@_current_attribute_settings = old_attribute_settings
|
16
|
+
end
|
17
|
+
end
|
@@ -16,13 +16,8 @@ export default class extends Controller {
|
|
16
16
|
initPluginInstance() {
|
17
17
|
let options = {
|
18
18
|
hiddenInput: this.fieldTarget.dataset.method,
|
19
|
-
customContainer: "w-full"
|
20
|
-
|
21
|
-
|
22
|
-
// TODO: add instructions on how to copy this asset into the application's assets path and write the meta tag into the head (via the engine?)
|
23
|
-
const utilsScriptPath = metaContent("intl_tel_input_utils_path")
|
24
|
-
if (utilsScriptPath) {
|
25
|
-
options['utilsScript'] = utilsScriptPath
|
19
|
+
customContainer: "w-full",
|
20
|
+
utilsScript: metaContent("intl_tel_input_utils_path") || `https://cdn.jsdelivr.net/npm/intl-tel-input@${window.intlTelInputGlobals.version}/build/js/utils.js`
|
26
21
|
}
|
27
22
|
|
28
23
|
this.plugin = intlTelInput(this.fieldTarget, options);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bullet_train-fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Culver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: standard
|
@@ -99,6 +99,9 @@ files:
|
|
99
99
|
- app/controllers/concerns/fields/date_support.rb
|
100
100
|
- app/controllers/concerns/fields/options_support.rb
|
101
101
|
- app/controllers/concerns/fields/super_select_support.rb
|
102
|
+
- app/helpers/account/dates_helper.rb
|
103
|
+
- app/helpers/account/forms_helper.rb
|
104
|
+
- app/helpers/attributes_helper.rb
|
102
105
|
- app/helpers/dependent_fields_frame_helper.rb
|
103
106
|
- app/helpers/fields/address_field_helper.rb
|
104
107
|
- app/helpers/fields/cloudinary_image_helper.rb
|