mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
8.5 KiB
316 lines
8.5 KiB
# sig/pagy.rbs
|
|
|
|
class Pagy
|
|
VERSION: String
|
|
ROOT: Pathname
|
|
OPTIONS: options
|
|
|
|
# @deprecated Use `Pagy::OPTIONS` instead
|
|
def self.options: () -> options
|
|
|
|
# @deprecated Use `sync(:javascript, ...)` instead
|
|
def self.sync_javascript: (String destination, *String targets) -> void
|
|
|
|
def self.sync: (Symbol resource, String destination, *String targets) -> void
|
|
def self.dev_tools: (?wand_scale: Integer) -> String
|
|
def self.translate_with_the_slower_i18n_gem!: () -> void
|
|
|
|
class Offset < Pagy
|
|
attr_reader offset: Integer
|
|
attr_reader count: Integer
|
|
attr_reader from: Integer
|
|
attr_reader to: Integer
|
|
attr_reader previous: Integer?
|
|
attr_reader next: Integer?
|
|
attr_reader last: Integer
|
|
|
|
alias pages last
|
|
end
|
|
|
|
class Countish < Offset
|
|
end
|
|
class Countless < Offset
|
|
attr_reader last: Integer?
|
|
end
|
|
class Keyset < Pagy
|
|
class ActiveRecord < Keyset
|
|
end
|
|
class Sequel < Keyset
|
|
end
|
|
class Keynav < Keyset
|
|
class ActiveRecord < Keyset
|
|
end
|
|
class Sequel < Keyset
|
|
end
|
|
end
|
|
|
|
attr_reader records: Array[untyped]
|
|
end
|
|
|
|
class Calendar < ::Hash[Symbol, Calendar::Unit]
|
|
def self.localize_with_rails_i18n_gem: (*Symbol locales) -> void
|
|
|
|
def showtime: () -> ActiveSupport::TimeWithZone
|
|
def url_at: (ActiveSupport::TimeWithZone time, **url_opts) -> String
|
|
|
|
class Unit < Pagy
|
|
attr_reader order: Symbol
|
|
attr_reader from: ActiveSupport::TimeWithZone
|
|
attr_reader to: ActiveSupport::TimeWithZone
|
|
attr_reader previous: Integer?
|
|
attr_reader last: Integer
|
|
alias pages last
|
|
end
|
|
|
|
class Year < Unit
|
|
end
|
|
class Quarter < Unit
|
|
end
|
|
class Month < Unit
|
|
end
|
|
class Week < Unit
|
|
end
|
|
class Day < Unit
|
|
end
|
|
end
|
|
|
|
class SearchBase < Offset
|
|
end
|
|
|
|
class ElasticsearchRails < SearchBase
|
|
end
|
|
|
|
class Meilisearch < SearchBase
|
|
end
|
|
|
|
class Searchkick < SearchBase
|
|
end
|
|
|
|
class TypesenseRails < SearchBase
|
|
end
|
|
|
|
module Search
|
|
class Arguments < Array[untyped]
|
|
end
|
|
|
|
def pagy_search: (*untyped arguments, untyped) -> Search::Arguments
|
|
end
|
|
|
|
class Method
|
|
interface _Collection
|
|
def offset: (Integer offset) -> _Collection
|
|
def limit: (Integer limit) -> _Collection
|
|
end
|
|
|
|
|
|
type collection = _Collection | Array[untyped]
|
|
|
|
def pagy: (:offset, collection collection, **offset_opts options) -> [Offset, collection]
|
|
| (:countless, collection collection, **countless_opts options) -> [Countless, collection]
|
|
| (:countish, collection collection, **countish_opts options) -> [Countish, collection]
|
|
|
|
| (:keyset, ::ActiveRecord::Relation[untyped] set, **keyset_opts options) -> [Keyset::ActiveRecord, Array[::ActiveRecord::Base[untyped]]]
|
|
| (:keyset, ::Sequel::Dataset[untyped] set, **keyset_opts options) -> [Keyset::Sequel, Array[::Sequel::Model[untyped]]]
|
|
|
|
| (:keynav_js, ::ActiveRecord::Relation[untyped] set, **keyset_opts options) -> [Keyset::Keynav::ActiveRecord, Array[::ActiveRecord::Base[untyped]]]
|
|
| (:keynav_js, ::Sequel::Dataset[untyped] set, **keyset_opts options) -> [Keyset::Keynav::Sequel, Array[::Sequel::Model[untyped]]]
|
|
|
|
| (:calendar, _Collection collection, **calendar_config) -> [Calendar, Offset, _Collection]
|
|
|
|
| (:elasticsearch_rails, Search::Arguments, **search_opts options) -> [ElasticsearchRails, untyped]
|
|
| (:elasticsearch_rails, untyped search, **search_opts options) -> ElasticsearchRails
|
|
|
|
| (:meilisearch, Search::Arguments, **search_opts options) -> [Meilisearch, untyped]
|
|
| (:meilisearch, untyped search, **search_opts options) -> Meilisearch
|
|
|
|
| (:searchkick, Search::Arguments, **search_opts options) -> [Searchkick, untyped]
|
|
| (:searchkick, untyped search, **search_opts options) -> Searchkick
|
|
|
|
| (:typesense_rails, Search::Arguments, **search_opts options) -> [TypesenseRails, untyped]
|
|
| (:typesense_rails, untyped search, **search_opts options) -> TypesenseRails
|
|
end
|
|
|
|
# Helper methods
|
|
def data_hash: (**data_opts) -> pagy_data_hash
|
|
def headers_hash: (**headers_opts) -> Hash[String, String]
|
|
def urls_hash: (**url_opts) -> Hash[Symbol, String]
|
|
|
|
def page_url: (:first | :current | :page | :previous | :next | :last | Integer page, **url_opts) -> String
|
|
def next_tag: (String? text, **anchor_tags_opts) -> String
|
|
|
|
module NumericHelpers
|
|
def series_nav: (?Symbol? style, **series_nav_opts) -> String
|
|
def series_nav_js: (?Symbol? style, **series_nav_js_opts) -> String
|
|
def input_nav_js: (?Symbol? style, **nav_opts) -> String
|
|
|
|
def previous_tag: (String? text, **anchor_tags_opts) -> String
|
|
def limit_tag_js: (?id: String?, ?item_name: String?, **url_opts) -> String
|
|
def info_tag: (?id: String?, ?item_name: String?) -> String
|
|
end
|
|
|
|
##### OPTIONS #####
|
|
|
|
type url_opts = {
|
|
?fragment: String,
|
|
?absolute: bool,
|
|
?path: String,
|
|
?querify: Proc,
|
|
?jsonapi: bool,
|
|
?root_key: String,
|
|
?page_key: String,
|
|
?limit_key: String,
|
|
}
|
|
|
|
##### Paginator Options #####
|
|
|
|
type paginator_opts = url_opts & {
|
|
?page: Integer,
|
|
?limit: Integer,
|
|
?max_pages: Integer,
|
|
?client_max_limit: Integer,
|
|
?request: _RackRequest | request_hash
|
|
}
|
|
|
|
type offset_opts = paginator_opts & {
|
|
?count: Integer,
|
|
?count_over: bool,
|
|
?raise_range_error: bool
|
|
}
|
|
|
|
type countish_opts = offset_opts & {
|
|
?ttl: Integer,
|
|
?epoch: Integer
|
|
}
|
|
|
|
type countless_opts = offset_opts & {
|
|
?headless: bool
|
|
}
|
|
|
|
type unit_opts = paginator_opts & {
|
|
?slots: Integer,
|
|
?compact: bool,
|
|
?format: String,
|
|
?order: Symbol
|
|
}
|
|
|
|
type calendar_config = {
|
|
?year: unit_opts,
|
|
?quarter: unit_opts,
|
|
?month: unit_opts,
|
|
?week: unit_opts,
|
|
?day: unit_opts,
|
|
?offset: offset_opts,
|
|
?disabled: bool
|
|
}
|
|
|
|
type keyset_opts = paginator_opts & {
|
|
?keyset: Hash[untyped, untyped],
|
|
?tuple_comparison: bool,
|
|
?pre_serialize: Proc
|
|
}
|
|
|
|
type search_opts = {
|
|
?search_method: Symbol
|
|
}
|
|
|
|
##### Helper Options #####
|
|
|
|
### data_hash ###
|
|
type pagy_data_key = :url_template | :first_url | :previous_url | :current_url
|
|
| :page_url | :next_url | :last_url | :count | :page
|
|
| :limit | :last | :in | :from | :to | :previous
|
|
| :next | :options | Symbol
|
|
|
|
# The return structure with optional keys (marked with ?)
|
|
type pagy_data_hash = {
|
|
?url_template: String,
|
|
?first_url: String,
|
|
?previous_url: String,
|
|
?current_url: String,
|
|
?page_url: String,
|
|
?next_url: String,
|
|
?last_url: String,
|
|
?count: Integer,
|
|
?page: Integer,
|
|
?limit: Integer,
|
|
?last: Integer,
|
|
?in: Integer,
|
|
?from: Integer,
|
|
?to: Integer,
|
|
?previous: Integer,
|
|
?next: Integer,
|
|
?options: options
|
|
} & Hash[Symbol, untyped] # Intersection allows for 'send' method results
|
|
|
|
type data_opts = url_opts & {
|
|
?data_keys: Array[pagy_data_key]
|
|
}
|
|
|
|
type headers_opts = url_opts & {
|
|
?headers_map: Hash[Symbol, String]
|
|
}
|
|
|
|
##### NumericUI Options #####
|
|
type anchor_tags_opts = url_opts & {
|
|
?text: String,
|
|
?aria_label: String
|
|
}
|
|
|
|
type nav_opts = url_opts & {
|
|
?id: String,
|
|
?aria_label: String,
|
|
?item_name: String,
|
|
?style: :pagy | :bootstrap | :bulma,
|
|
?anchor_string: String
|
|
}
|
|
|
|
type series_nav_opts = nav_opts & {
|
|
?slots: Integer,
|
|
?compact: bool,
|
|
}
|
|
|
|
type series_nav_js_opts = series_nav_opts & {
|
|
?steps: Hash[Integer, Integer]
|
|
}
|
|
|
|
type options = url_opts & paginator_opts & offset_opts & countish_opts & countless_opts &
|
|
unit_opts & keyset_opts & search_opts &
|
|
anchor_tags_opts & nav_opts & data_opts & headers_opts & nav_opts & series_nav_opts & series_nav_js_opts
|
|
|
|
##### REQUEST #####
|
|
|
|
interface _RackRequest
|
|
def base_url: () -> String
|
|
def path: () -> String
|
|
def GET: () -> Hash[String, untyped]
|
|
def POST: () -> Hash[String, untyped]
|
|
def cookies: () -> Hash[String, String]
|
|
end
|
|
|
|
type request_hash = {
|
|
base_url: String,
|
|
path: String,
|
|
params: Hash[String, untyped],
|
|
?cookie: String
|
|
}
|
|
end
|
|
|
|
module ActiveRecord
|
|
class Base[T]
|
|
end
|
|
class Relation[T]
|
|
end
|
|
end
|
|
|
|
module ActiveSupport
|
|
class TimeWithZone
|
|
end
|
|
end
|
|
|
|
module Sequel
|
|
class Dataset[T]
|
|
end
|
|
class Model[T]
|
|
end
|
|
end
|