mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-16 22:43:13 +00:00
67 lines
2.7 KiB
HTML
67 lines
2.7 KiB
HTML
<!--
|
|
Copyright © 2022 - 2025 The Hinode Team / Mark Dumay. All rights reserved.
|
|
Use of this source code is governed by The MIT License (MIT) that can be found in the LICENSE file.
|
|
Visit gethinode.com/license for more details.
|
|
-->
|
|
|
|
{{ $error := false }}
|
|
|
|
<!-- Validate arguments -->
|
|
{{ if partial "utilities/IsInvalidArgs.html" (dict "structure" "table" "args" .Params) }}
|
|
{{ errorf "Invalid arguments: %s" .Position -}}
|
|
{{ $error = true }}
|
|
{{ end }}
|
|
|
|
<!-- Initialize arguments -->
|
|
{{ $breakpoint := "" }}
|
|
{{ $class := "" }}
|
|
{{ $sortable := false }}
|
|
{{ $paging := false }}
|
|
{{ $searchable := false }}
|
|
{{ $pagingOptionPerPage := 10 }}
|
|
{{ $pagingOptionPerPageSelect := "" }}
|
|
|
|
{{- if .IsNamedParams -}}
|
|
{{ $breakpoint = .Get "breakpoint" }}
|
|
{{ $class = .Get "class" | default "" }}
|
|
{{ if isset .Params "sortable" }}{{ $sortable = partial "utilities/CastBool.html" (.Get "sortable") }}{{ end }}
|
|
{{ if isset .Params "paging" }}{{ $paging = partial "utilities/CastBool.html" (.Get "paging") }}{{ end }}
|
|
{{ if isset .Params "searchable" }}{{ $searchable = partial "utilities/CastBool.html" (.Get "searchable") }}{{ end }}
|
|
{{ if isset .Params "pagingOptionPerPage" }}{{ $pagingOptionPerPage = (.Get "pagingOptionPerPage") }}{{ end }}
|
|
{{ if isset .Params "pagingOptionPerPageSelect" }}{{ $pagingOptionPerPageSelect = (.Get "OptionPerPageSelect") }}{{ end }}
|
|
{{ else }}
|
|
{{ $breakpoint = .Get 0 }}
|
|
{{ end }}
|
|
|
|
<!-- Main code -->
|
|
{{ if or $sortable $paging $searchable }}{{ $class = trim (printf "%s data-table" $class) " " }}{{ end }}
|
|
|
|
{{- $input := .Inner | .Page.RenderString }}
|
|
{{ $regex := `<table\s*class="(.+?)"` }}
|
|
{{ $current := (index (index (findRESubmatch $regex $input) 0) 1) }}
|
|
{{ $target := delimit (((split $current " ") | append "table" | append $class) | uniq) " " }}
|
|
|
|
{{ $attributes := "" }}
|
|
{{ if $sortable }}{{ $attributes = printf "%s data-table-sortable=true" $attributes }}{{ end }}
|
|
{{ if $paging }}
|
|
{{ $attributes = printf "%s data-table-paging=true" $attributes }}
|
|
{{ $attributes = printf "%s data-table-paging-option-perPage=%d" $attributes $pagingOptionPerPage }}
|
|
{{ if (ne $pagingOptionPerPageSelect "") }}
|
|
{{ $attributes = printf "%s data-table-paging-option-perPageSelect=%s" $attributes $pagingOptionPerPageSelect }}
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ if $searchable }}{{ $attributes = printf "%s data-table-searchable=true" $attributes }}{{ end }}
|
|
|
|
|
|
{{- $new := printf `<table class="%s" %s` $target (trim $attributes " ") -}}
|
|
{{ $input := replaceRE $regex $new $input 1 -}}
|
|
|
|
{{ if not $error }}
|
|
{{ if eq $breakpoint "none" }}
|
|
{{ $input | safeHTML }}
|
|
{{ else }}
|
|
<div class="table-responsive{{- with $breakpoint }}-{{ . }}{{ end -}}">
|
|
{{ $input | safeHTML }}
|
|
</div>
|
|
{{ end }}
|
|
{{ end }} |